bitkeeper revision 1.1705.1.7 (42a94e88EO8US-LmAPxu7rbUmKFdUg)
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Fri, 10 Jun 2005 08:25:44 +0000 (08:25 +0000)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Fri, 10 Jun 2005 08:25:44 +0000 (08:25 +0000)
Move saved_upcall_mask in cpu_user_regs to CS+4 rather than CS+2 on
x86/64.
Signed-off-by: Keir Fraser <keir@xensource.com>
xen/arch/x86/x86_64/entry.S
xen/include/public/arch-x86_64.h

index fcf9201e4e19f487f3e9e738e40d726d126942f6..5c3e1a598a9ebd48c9feb4754c7da6b28ee67354 100644 (file)
@@ -316,7 +316,7 @@ FLT4:   movq  %rax,16(%rsi)             # RFLAGS
         testb $TBF_INTERRUPT,%cl
         setnz VCPUINFO_upcall_mask(%rax)# TBF_INTERRUPT -> clear upcall mask
         popq  %rax
-        shll  $16,%eax                  # Bits 16-23: saved_upcall_mask
+        shlq  $32,%rax                  # Bits 32-39: saved_upcall_mask
         movw  UREGS_cs+8(%rsp),%ax      # Bits  0-15: CS
 FLT5:   movq  %rax,8(%rsi)              # CS/saved_upcall_mask
         movq  UREGS_rip+8(%rsp),%rax
index 65efc977a5ff2714df331d47eb781d66b23cfb4b..a4f4ac2fcfa91a62ce66477745ba67cffbefe9be 100644 (file)
@@ -153,16 +153,16 @@ typedef struct cpu_user_regs {
     u32 error_code;    /* private */
     u32 entry_vector;  /* private */
     union { u64 rip, eip; };
-    u16 cs;
+    u16 cs, _pad0[1];
     u8  saved_upcall_mask;
-    u8  _pad0[5];
+    u8  _pad1[3];
     union { u64 rflags, eflags; };
     union { u64 rsp, esp; };
-    u16 ss, _pad1[3];
-    u16 es, _pad2[3];
-    u16 ds, _pad3[3];
-    u16 fs, _pad4[3]; /* Non-zero => takes precedence over fs_base.      */
-    u16 gs, _pad5[3]; /* Non-zero => takes precedence over gs_base_user. */
+    u16 ss, _pad2[3];
+    u16 es, _pad3[3];
+    u16 ds, _pad4[3];
+    u16 fs, _pad5[3]; /* Non-zero => takes precedence over fs_base.      */
+    u16 gs, _pad6[3]; /* Non-zero => takes precedence over gs_base_user. */
 } cpu_user_regs_t;
 
 typedef u64 tsc_timestamp_t; /* RDTSC timestamp */